I Compleanni di Oggi |
۰ Oggi non si puo' festeggiare nessuno...
|
|
Biblioteca di Non Solo Cuneo
|
|
Stai leggendo il capitolo: e se in Xpo manca msgina.dll? .. mi sta capitando su una versioen cinese con sp2 Scritto da
Davy
|
|
|
Attenzione, per accedere alle funzioni bisogna essere iscritti.
|
Persona |
Titolo |
Davy
6/7/2006
14.38.50
|
Sostituire una DLL di sistema
Winlogon.exe è il processo responsabile dell'implementazione del logon interattivo. Esso tocca vari aspetti tra cui l'autenticazione delle credenziali dell'utente anche attraverso i protocolli di rete , lo screen saver e altre operazioni di startup. Una DLL di supporto del Winlogon è la familiarmente chiamata GINA. Il nome reale è MSGINA.DLL e sta per MicroSoft Graphical Identification aNd Authentication. Questa DLL, di cui si riesce a trovare solo una minima documentazione, implementa le funzioni di Input/Output con l'utente, i dialoghi per l'inserimento di user-name, password e dominio e gestisce lo screen saver. Tanto per rendere l'idea, il logon tramite impronte digitali o scansione della retina, badge, Smart Card e così via sono di solito implementati tramite una GINA particolare.
Per l’utente il winlogon non è granché visibile se non aprendo il Task Manager o qualche altra utility. Tuttavia esso è fondamentale per il sistema poiché è lui che, anche tramite GINA, crea la sessione utente e lancia la shell (solitamente Explorer). Come si può vedere in Figura 3, WinLogon è il padre di alcuni processi fondamentali come services e lsass. Non appena avviato, WinLogon registra come propria la sequenza di tasti Ctrl-Alt-Canc (anche chiamata Secure Attention Sequence, SAS) in modo che applicazioni Trojan Horse non possano recuperare informazioni sugli account.
La GINA è una DLL di supporto di WinLogon e può essere rimpiazzata. In pratica il Winlogon durante le sue transizioni di stato e su particolari eventi invoca funzioni esposte da GINA. Alcune di queste funzioni ci interessano direttamente. Esse sono:
WlxSasNotify() WlxLoggedOutSas() WlxLoggedOnSas() WlxWkstaLockedSas() WinLogon chiamerà WlxSasNotify() quando è pronto ad intercettare la sequenza SAS, mentre WlxLoggedOutSas() serve quando l’utente chiede di fare logon premendo Ctrl-Alt-Canc. Se invece c’è un utente già loggato verrà chiamata WlxLoggedOnSas(). Infine, se il sistema è locked è il turno di WlxWkstaLockedSas().
Personalmente vi sconsiglio caldamente di tentare di implementare le singole funzioni GINA a meno che non sia strettamente necessario. Un commento che trovate sulla documentazione Microsoft dice testualmente:
Those who use this documentation should have a firm knowledge of the Windows NT security architecture, especially with regard to tokens, authentication packages, and related matters. Any developer intending to write a replacement GINA is encouraged to work with Microsoft's Vendor Assistance program.
La cosa suona indubbiamente minacciosa ma per fortuna possiamo cominciare avvalendoci di un esempio che si trova su MSDN. Si chiama GinaStub e vi sarà sufficiente fare una ricerca su GINA per trovarlo. Esso segue un approccio minimale e di fatto carica la GINA originale (msgina.dll) e si limita a richiamarne le funzioni: una sorta di pass-through GINA. Ecco la tipica implementazione di una funzione:
int WINAPI
|
|
.:Premi il tasto "Indietro" per tornare alla pagina precedente.
|
Attenzione, per accedere alle funzioni bisogna essere iscritti.
|
|